package leecode;

import java.util.HashSet;

/**
 *
 *
 * @author qingyan 2021-06-29
 */
public class Question36 {
    public boolean isValidSudoku(char[][] board) {
        HashSet[] h = new HashSet[9];
        HashSet[] g = new HashSet[9];
        HashSet[][] hg = new HashSet[3][3];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                char c = board[i][j];
                if (c != '.') {
                    if (h[i] == null) {
                        h[i] = new HashSet();
                    }
                    if (g[j] == null) {
                        g[j] = new HashSet();
                    }
                    if (hg[i/3][j/3]==null) {
                        hg[i / 3][j / 3] =new  HashSet();
                    }
                    boolean f1 =  h[i].add(c);
                    boolean f2 = g[j].add(c);
                    boolean f3 = hg[i / 3][j / 3].add(c);
                    if (f1 && f2 && f3) {

                    }else {
                        return false;
                    }
                }
            }

        }
        return true;
    }


    public static void main(String[] args) {
        char[][] board =
                {{'5', '3', '.', '.', '7', '.', '.', '.', '.'}
                        , {'6', '.', '.', '1', '9', '5', '.', '.', '.'}
                        , {'.', '9', '8', '.', '.', '.', '.', '6', '.'}
                        , {'8', '.', '.', '.', '6', '.', '.', '.', '3'}
                        , {'4', '.', '.', '8', '.', '3', '.', '.', '1'}
                        , {'7', '.', '.', '.', '2', '.', '.', '.', '6'}
                        , {'.', '6', '.', '.', '.', '.', '2', '8', '.'}
                        , {'.', '.', '.', '4', '1', '9', '.', '.', '5'}
                        , {'.', '.', '.', '.', '8', '.', '.', '7', '9'}};

        Question36 q36 = new Question36();
        boolean validSudoku = q36.isValidSudoku(board);
        System.out.println(validSudoku);
    }
}
